/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Vectors;

import Vectors.Exceptions.IncompatibleVectorSizesException;
import Vectors.Patterned.Observer;
import java.io.Serializable;

/**
 *
 * @author Nigga
 */
public interface IVector extends Iterable<Double>, Cloneable, Serializable {

    public void add(double o);

    public void delete(int index);

    public Double get(int id);

    public void set(double value, int position);

    public void fill(double[] mass) throws IncompatibleVectorSizesException;

    public void fill(IVector myVector) throws IncompatibleVectorSizesException;

    public boolean isSame(IVector myVector) throws IncompatibleVectorSizesException;

    public int getLength();

    public void multiply(double f);

    public void plus(IVector llv) throws IncompatibleVectorSizesException;

    public void sort();

    public void swap(int i, int j);

    public IVector clone() throws CloneNotSupportedException;

    public void addObserver(Observer observer);

    public void removeObserver(Observer observer);

    public void notifyToObservers();

    public void notifyToObservers(int index, double value);

    @Override
    public String toString();

    @Override
    public int hashCode();

    @Override
    public boolean equals(Object obj);
}
